linux: vmalloc_sync_all() is not a no-op when running in PAE mode on Xen.
authorKeir Fraser <keir@xensource.com>
Sat, 17 Feb 2007 13:26:33 +0000 (13:26 +0000)
committerKeir Fraser <keir@xensource.com>
Sat, 17 Feb 2007 13:26:33 +0000 (13:26 +0000)
Also vmalloc_sync_all() is only defined for x86 architectures so make
use of it in driver code conditional on CONFIG_X86.
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/i386/mm/fault-xen.c
linux-2.6-xen-sparse/drivers/xen/util.c
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/pgtable-3level.h

index a9e9bcf57675e016cc832c0c6c5781cabf52fd60..78639201bc8a53e3e36665cf3363d83a081c5cb5 100644 (file)
@@ -731,7 +731,7 @@ do_sigbus:
        force_sig_info_fault(SIGBUS, BUS_ADRERR, address, tsk);
 }
 
-#ifndef CONFIG_X86_PAE
+#if !HAVE_SHARED_KERNEL_PMD
 void vmalloc_sync_all(void)
 {
        /*
index 6ca8600dbe4657ab4011befc5aa5d7fdd00ffa4f..8f5ae386ffdef98e0e2e899cc6794f5778133528 100644 (file)
@@ -31,7 +31,9 @@ struct vm_struct *alloc_vm_area(unsigned long size)
        }
 
        /* Map page directories into every address space. */
+#ifdef CONFIG_X86
        vmalloc_sync_all();
+#endif
 
        return area;
 }
index 7c3c36b2866839b81e3cf0bc9db8c9f65a7dd8b7..29b4036a72ba4903c578214817a5df45a628b82d 100644 (file)
@@ -180,6 +180,6 @@ static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
 
 #define __pmd_free_tlb(tlb, x)         do { } while (0)
 
-#define vmalloc_sync_all() ((void)0)
+void vmalloc_sync_all(void);
 
 #endif /* _I386_PGTABLE_3LEVEL_H */